1. Field of the Invention
The present invention generally relates to consumer interactive devices such as gaming machines and, more particularly, to ways of protecting these consumer interactive devices from tampering.
2. Discussion of Background
The operation of many consumer interactive devices, such as gaming machines, is by means of a program running upon a microcomputer. A program memory is typically an electronic device that contains a set of instructions by means of which a microcomputer plays and presents a game. The program memory is generally a semiconductor device, but may be a rotating storage apparatus, such as a magnetic hard disk. Common program memory is a read-only device, which in many cases is an erasable programmable read-only memory (EPROM). Generally and typically, a program memory is a member of a set of devices known as electronic memory and is designed to be accessed by means of a standard memory bus configuration which may include a chip enable input signal, a data output enable input signal, a data bus, and address bus and, in some cases, a write enable input signal. An EPROM may be erased by application of a manufacturer specified set of conditions and may be programmed to contain a set of instructions in binary format by means of a manufacturer specified device (EPROM programmer) commonly available. Generally, EPROMs available from different manufacturers may be easily programmed by a person possessing minimum technical skills. A copy of EPROM contents is very easily made and the copy may serve as a basis for an unscrupulous individual to construct a set of program instructions that cheat a player or an operator of a consumer interactive device, such as gaming device.
Various numeric algorithms that produce a set of numeric results exist and are employed to assure that contents of program memory have not been altered from contents originally programmed. The algorithms perform a mathematical operation by means of reading the binary contents of a program memory and performing a mathematical operation that combines binary values into a compact result commonly termed a signature. These algorithms check the memory content, but generally require that a skilled person perform manual verification of the memory content by means of physically removing the program memory from an apparatus, placing the program memory into an apparatus which can read binary content of program memory and generating a signature of the memory contents in accordance with a predetermined mathematical algorithm. Certain well-known methods of obtaining a memory check signature such as checksum or cyclic redundancy check are easily defeated. More secure and less easily defeated methods of generating a signature of program memory exist, but are not employed by all manufacturers.
Unscrupulous individuals may attempt to cheat operators of games by means of modifying the contents of a game program memory to attain a predetermined result. Players of games may also be cheated by unscrupulous operators employing the same means. Large amounts of money are lost each year by game operators and players alike to cheating by means of inserting EPROM's containing program memory modified to produce a dishonest result. Many thousands of gaming devices are installed world wide and verification of program memory contents is difficult; since to do so requires that game program memory be physically removed and manually verified. Additionally some regulatory bodies regularly require verification of gaming machine program memory in accordance with a specified time schedule. The scheduled verification can be difficult and costly if performed by the currently available manual means.
A market exists for previously used gaming machines, but various gaming devices not permitted in certain jurisdictions. The fact that they are not permitted does not, however, prevent them being imported and placed into use. Current methods of curtailing use of unauthorized devices are primarily regulatory in nature and require great amounts of manpower to implement. There is no simple method of disabling a consumer interactive device, such as a gaming machine, for regulatory purposes other than removing program memory or the main controller printed circuit board.
Accordingly, it is of great concern to manufacturers and operators of gaming machines and computer-controlled devices in general, that unauthorized reading of the contents of a program memory may be performed. The reading may allow copies of program memory to be made and not paid for, be for purposes of reverse engineering of a program, be used as a basis for creating a program memory with unauthorized features to cheat an operator or user or for various other reasons. Program memories in common use are generic devices that allow interface to computer or microcomputer electrical interconnections in a very simple and well-defined manner. Specifically, the electrical connections are made to a computer or microcomputer data bus, address bus. Provision is made for application of a signal to generally enable memory (chip enable) and to cause binary data to be output upon a data bus (output enable or read enable). Since program memory devices are so simple and made to a generic interface standard, the process of reading the contents of a memory device is easily accomplished. From the standpoint of the program memory device, there is no difference if reading is by means of an attached computer which depends upon the device for its program instruction or if reading is by means of a device which stores binary content of the program memory device for later analysis, modification or to allow production of a copy of the binary program contents.
Additionally, there is a complication in that program memory devices are typically required to be comprised of materials that allow electrical signals of very short duration to be recognized and interpreted. The requirement for recognition of short duration electrical signals corresponds directly to speed of operation of a computer device and precludes on-the-fly decoding schemes that require significant time to accomplish. Decoding and downloading program memory to random access memory (RAM) is also not an acceptable solution in certain operational environments due to ease with which RAM contents may be corrupted.
Methods of encoding program memory content with subsequent on-the-fly decoding of program memory content by attached computers running a program contained within the program memory do exist. Generally, specialized hardware will be required to protect program memory in a circuit board designed. To use a generic program memory will require at least complete re-design of an existing circuit board and redesign of an existing method of writing program memory into a program memory device.